<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // 集合：表示无重复值的有序列表
    let set = new Set();
    console.log(set);

    // 添加元素
    set.add(2);
    set.add('30');
    // 覆盖
    set.add('30');
    set.add([1,2,3]);
    // 删除元素
    set.delete(2);
    // 校验某个值是否存在set中
    console.log(set.has('30'));
    console.log(set.size);
    console.log(set);

    console.log('=====================');

    // Set只有值（没有键）,所以键和值相同
    set.forEach((val,key) => {
        console.log(val);
        console.log(key);
    })

    // 将set转换成数组
    let set2 = new Set([1,2,2,3,3,2]);
    // 扩展运算符（实现了数组的去重）
    let arr = [...set2];
    console.log(arr);

    console.log('=======================');

    // 1.set中对象的引用无法被释放
    let set3 = new Set(), obj = {};
    set3.add(obj);
    // 释放当前的资源
    obj = null;
    console.log(set3)

    // WeakSet
    // 1.不能传入非对象类型的参数
    // 2.不可迭代
    // 3.没有forEach()
    // 4.没有size属性
    let set4 = new WeakSet(),obj2 = {};
    set4.add(obj2);
    obj2 = null;
    console.log(set4);


</script>
</body>
</html>